package com.dapeng.cleardatabackend.model.dto.graph;

import com.dapeng.cleardatabackend.model.enums.IsEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @author dapeng
 * @description 添加图谱请求
 * @date 2024/12/22 13:59
 */
@Data
@ApiModel(description = "添加图谱请求")
public class GraphAddRequest implements Serializable {
    private static final long serialVersionUID = 431319699180079952L;

    /**
     * 图谱名称
     */
    @ApiModelProperty(value = "图谱名称", required = true)
    @NotNull(message = "图谱名称不能为空")
    @Size(min = 1, max = 256, message = "图谱名称长度需要在1-256位之间")
    private String name;

    /**
     * 图谱描述
     */
    @ApiModelProperty(value = "图谱描述")
    @Size(max = 1024, message = "图谱描述长度需要在1-1024位之间")
    private String description;

    /**
     * 是否公开 0-私有 1-公开
     */
    @ApiModelProperty(value = "是否公开 0-私有 1-公开", dataType = "java.lang.Integer")
    private IsEnum isPublic;

    /**
     * 关系文件
     */
    @ApiModelProperty(value = "关系文件", required = true)
    @NotNull(message = "关系文件不能为空")
    private MultipartFile relationFile;

    /**
     * 节点文件
     */
    @ApiModelProperty(value = "节点文件", required = true)
    @NotNull(message = "节点文件不能为空")
    private MultipartFile nodeFile;

    /**
     * 关系文件分割符号
     */
    @ApiModelProperty(value = "关系文件分割符号", required = true)
    @NotNull(message = "关系文件分割符号不能为空")
    private String relationFileDelimiter;

    /**
     * 节点文件分割符号
     */
    @ApiModelProperty(value = "节点文件分割符号", required = true)
    @NotNull(message = "节点文件分割符号不能为空")
    private String nodeFileDelimiter;

    /**
     * 前键id列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "前键id列序号", required = true)
    @NotNull(message = "前键id列序号不能为空")
    @Min(value = 0, message = "前键id列序号只能是0、1、2")
    @Max(value = 2, message = "前键id列序号只能是0、1、2")
    private Integer startIdColumnIndex;

    /**
     * 后键id列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "后键id列序号", required = true)
    @NotNull(message = "后键id列序号不能为空")
    @Min(value = 0, message = "后键id列序号只能是0、1、2")
    @Max(value = 2, message = "后键id列序号只能是0、1、2")
    private Integer endIdColumnIndex;

    /**
     * 关系列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "关系列序号", required = true)
    @NotNull(message = "关系列序号不能为空")
    @Min(value = 0, message = "关系列序号只能是0、1、2")
    @Max(value = 2, message = "关系列序号只能是0、1、2")
    private Integer relationColumnIndex;

    /**
     * 节点id列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "节点id列序号", required = true)
    @NotNull(message = "节点id列序号不能为空")
    @Min(value = 0, message = "节点id列序号只能是0、1、2")
    @Max(value = 2, message = "节点id列序号只能是0、1、2")
    private Integer nodeIdColumnIndex;

    /**
     * 节点列标签列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "节点列标签列序号", required = true)
    @NotNull(message = "节点列标签列序号不能为空")
    @Min(value = 0, message = "节点列标签列序号只能是0、1、2")
    @Max(value = 2, message = "节点列标签列序号只能是0、1、2")
    private Integer nodeLabelColumnIndex;

    /**
     * 节点文本列序号，只能是0、1、2
     */
    @ApiModelProperty(value = "节点文本列序号", required = true)
    @NotNull(message = "节点文本列序号不能为空")
    @Min(value = 0, message = "节点列标签列序号只能是0、1、2")
    @Max(value = 2, message = "节点列标签列序号只能是0、1、2")
    private Integer nodeTextColumnIndex;
}
